#define _CRT_SECURE_NO_WARNINGS 1

//https://www.luogu.com.cn/problem/P2089
//P2089 烤鸡
//# 烤鸡
//
//## 题目背景
//猪猪 Hanke 得到了一只鸡。
//## 题目描述
//猪猪 Hanke 特别喜欢吃烤鸡（本是同畜牲，相煎何太急！）Hanke 吃鸡很特别，为什么特别呢？因为他有 10 种配料（芥末、孜然等），
//每种配料可以放 1 到 3 克，任意烤鸡的美味程度为所有配料质量之和。
//现在， Hanke 想要知道，如果给你一个美味程度 n ，请输出这 10 种配料的所有搭配方案。
//
//## 输入格式
//一个正整数 n，表示美味程度。
//
//## 输出格式
//
//第一行，方案总数。
//
//第二行至结束，10 个数，表示每种配料所放的质量，按字典序排列。
//如果没有符合要求的方法，就只要在第一行输出一个 0。
//
//## 样例 #1
//样例输入 #1
//
//11
//样例输出 #1
//10
//1 1 1 1 1 1 1 1 1 2
//1 1 1 1 1 1 1 1 2 1
//1 1 1 1 1 1 1 2 1 1
//1 1 1 1 1 1 2 1 1 1
//1 1 1 1 1 2 1 1 1 1
//1 1 1 1 2 1 1 1 1 1
//1 1 1 2 1 1 1 1 1 1
//1 1 2 1 1 1 1 1 1 1
//1 2 1 1 1 1 1 1 1 1
//2 1 1 1 1 1 1 1 1 1

//#include<iostream>
//
//const int N = 15;
//int arr[N];//存放临时方案
//int n;
//int res;	//方案数
//int mem[59055][N];	//存放所有方案
//
//void dfs(int x,int sum)
//{
//	if (sum > n)		//剪枝
//		return;
//	if (x > 10)
//	{
//		if (sum == n)
//		{
//			res++;
//			for (int i = 1; i <= 10; i++)
//			{
//				mem[res][i] = arr[i];
//			}
//		}
//		return;
//	}
//
//	for (int i = 1; i <= 3; i++)	//每个位置可选1~3
//	{
//		arr[x] = i;
//		dfs(x + 1, sum + i);
//		arr[x] = 0;					//回溯
//	}
//}
//
//int main()
//{
//	scanf("%d", &n);
//	dfs(1,0);
//	printf("%d\n", res);
//	for (int i = 1; i <= res; i++)
//	{
//		for (int j = 1; j <= 10; j++)
//		{
//			printf("%d ", mem[i][j]);
//		}
//		printf("\n");
//	}
//	return 0;
//}

//
//https://www.luogu.com.cn/problem/P1088
//P1088[NOIP2004 普及组] 火星人

#include<iostream>

const int N = 10001;
int m, n;
int arr[N];		
bool st[N];		//标记数组
int mars[N];	//初始火星数组
int res;
bool return0;

void dfs(int x)
{
	if (return0)
	{
		return;
	}
	if (x > n)
	{
		res++;
		if (res == m + 1)
		{
			for (int i = 1; i <= n; i++)
			{
				printf("%d ", arr[i]);
			}
			return0 = true;
		}
		return;
	}

	for (int i = 1; i <= n; i++)
	{
		if (!res)
			i = mars[x];
		
		if (!st[i])
		{
			st[i] = true;
			arr[x] = i;
			dfs(x + 1);
			st[i] = false;
			arr[x] = 0;
		}
	}
}

int main()
{
	scanf("%d%d", &n, &m);
	for (int i = 1; i <= n; i++)
	{
		scanf("%d", &mars[i]);
	}
	dfs(1);
	return 0;
}